﻿Imports System.Windows.Forms
Imports Testeitor.Entidades
Imports Testeitor.DAO

Public Class DialogAsignacion

    Private _operacion As Util.Operacion
    Private _asignacion As AsignacionEntity

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
        Dim dao As New RolDAO()
        Select Case _operacion
            Case Util.Operacion.GUARDAR
                Dim asignacion As New AsignacionEntity(Convert.ToDateTime(Me.dateTiempo.Text), _
                    DirectCast(Me.cmbEstado.SelectedValue, EstadoEntity), DirectCast(Me.cmbUsuario.SelectedValue, UsuarioEntity), _
                    DirectCast(Me.cmbTest.SelectedValue, TestEntity), Convert.ToDateTime(Me.dateFecha.Text))
                dao.Insertar(asignacion)
                Util.mensaje("La Asignacion se ha guardado correctamente!", "Asignacion Guardada")
            Case Util.Operacion.MODIFICAR
                _asignacion.TiempoLimite = Convert.ToDateTime(Me.dateTiempo.Text)
                _asignacion.Estado = DirectCast(Me.cmbEstado.SelectedValue, EstadoEntity)
                _asignacion.User = DirectCast(Me.cmbUsuario.SelectedValue, UsuarioEntity)
                _asignacion.Test = DirectCast(Me.cmbTest.SelectedValue, TestEntity)
                _asignacion.FechaAsignacion = Convert.ToDateTime(Me.dateFecha.Text)
                dao.Actualizar(_asignacion)
                Util.mensaje("La Asignacion se ha modificado correctamente!", "Asignacion Guardada")
            Case Util.Operacion.ELIMINAR
                dao.Eliminar(_asignacion.Id)
                Util.mensaje("La Asignacion se ha eliminado correctamente!", "Asignacion Guardada")
        End Select

        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.Close()
        'If Me.txtNombre.Text.Length < 20 And Me.txtDescripcion.Text.Length < 200 Then

        'Else
        '    MessageBox.Show("El formato de los Datos ingresados es incorrecto", "Datos Incorrectos", MessageBoxButtons.OK, MessageBoxIcon.Error)
        'End If
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    Public Sub cargarDatos(ByVal asignacion As Entidades.EntityBase)
        _asignacion = asignacion
        Me.dateTiempo.Text = _asignacion.TiempoLimite
        Me.cmbEstado.SelectedValue = DirectCast(_asignacion, AsignacionEntity).Estado
        Me.cmbUsuario.SelectedValue = DirectCast(_asignacion, AsignacionEntity).User
        Me.cmbTest.SelectedValue = DirectCast(_asignacion, AsignacionEntity).Test
        Me.dateFecha.Text = _asignacion.FechaAsignacion

        Me.bloquear()
    End Sub

    Public Sub bloquear()
        If _operacion.Equals(Util.Operacion.ELIMINAR) Then
            Me.dateTiempo.Enabled = False
            Me.cmbEstado.Enabled = False
            Me.cmbUsuario.Enabled = False
            Me.cmbTest.Enabled = False
            Me.dateFecha.Enabled = False
        End If
    End Sub

    Public Sub New(ByVal oper As Util.Operacion)
        InitializeComponent()
        Me._operacion = oper
    End Sub

    Private Sub DialogAsignacion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim estadoDAO As New EstadoDAO
        Dim listaEstado As System.Collections.Generic.List(Of Entidades.EntityBase) = estadoDAO.SeleccionarTodas()
        Dim usuarioDAO As New UsuarioDAO
        Dim listaUsuario As System.Collections.Generic.List(Of Entidades.EntityBase) = usuarioDAO.SeleccionarTodas()
        Dim testDAO As New TestDAO
        Dim listaTest As System.Collections.Generic.List(Of Entidades.EntityBase) = testDAO.SeleccionarTodas()

        Util.cargarComboEntity(Me.cmbEstado, listaEstado)
        Util.cargarComboEntity(Me.cmbUsuario, listaUsuario)
        Util.cargarComboEntity(Me.cmbTest, listaTest)
    End Sub
End Class
